export type LayoutType = "vertical" | "classic" | "transverse" | "columns";

export type AssemblySizeType = "large" | "default" | "small";

export type LanguageType = "zh" | "en" | null;

/* GlobalState */
// 定义了全局状态，包括布局类型、元素大小、语言类型、是否最大化等等。
export interface GlobalState {
  layout: LayoutType;
  assemblySize: AssemblySizeType;
  language: LanguageType;
  maximize: boolean;
  primary: string;
  isDark: boolean;
  isGrey: boolean;
  isWeak: boolean;
  asideInverted: boolean;
  isCollapse: boolean;
  breadcrumb: boolean;
  breadcrumbIcon: boolean;
  tabs: boolean;
  tabsIcon: boolean;
  footer: boolean;
}

/* UserState */
// 定义了用户状态，包括 token 和用户信息。
export interface UserState {
  accessToken: string;
  refreshToken: string;
  userInfo: {
    name: string;
    userAvatar: string;
    userId: number;
    departmentId: number;
    departmentName: string;
    userRole: number;
  };
}

/* tabsMenuProps */
// 是一个接口（interface），定义了标签页属性，包括图标、标题、路径、名称和是否可关闭等。
export interface TabsMenuProps {
  icon: string;
  title: string;
  path: string;
  name: string;
  close: boolean;
}

/* TabsState */
// 定义了标签页的状态，包括标签菜单列表。
export interface TabsState {
  tabsMenuList: TabsMenuProps[];
}

/* AuthState */
// 定义了授权状态，包括当前路由名、授权按钮列表和授权菜单列表
export interface AuthState {
  routeName: string;
  authButtonList: {
    [key: string]: string[];
  };
  authMenuList: Menu.MenuOptions[];
}

/* KeepAliveState */
// 定义了缓存状态，包括需要缓存的页面名称列表。
export interface KeepAliveState {
  keepAliveName: string[];
}
